#ifndef PROTOCOL_H
#define PROTOCOL_H

#include <QByteArray>
#include "control_command.h"  // 引入 ControlCommand 结构体
#include "robot_state.h"      // 引入 RobotState 结构体

// 修复：将 class Protocol 改为 namespace Protocol（与源文件一致）
namespace Protocol {

/**
 * @brief 解析控制指令（从二进制数据解析为 ControlCommand 对象）
 * @param data 待解析的二进制数据（需符合协议格式）
 * @return ControlCommand 解析后的控制指令
 * @throw std::invalid_argument 解析失败（如数据长度不足）
 */
ControlCommand parseControlCommand(const QByteArray& data);

/**
 * @brief 序列化机器人状态（将 RobotState 转为二进制数据）
 * @param state 待序列化的机器人状态
 * @return QByteArray 序列化后的二进制数据（可用于网络传输）
 */
QByteArray serializeRobotState(const RobotState& state);

} // namespace Protocol

#endif // PROTOCOL_H